In computer science, a virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system. Each VM may function as a self-contained platform, running its own operating system (OS) and software applications (processes). Typically, a virtual machine manager (VMM) manages allocation and virtualization of computer resources and performs context switching, as may be necessary, to cycle between various VMs.
A host machine (e.g., computer or server) is typically enabled to simultaneously run multiple VMs, where each VM may be used by a remote client. The host machine allocates a certain amount of the host's resources to each of the VMs. Each VM is then able to use the allocated resources to execute applications, including operating systems known as guest operating systems. The VMM virtualizes the underlying hardware of the host machine or emulates hardware devices, making the use of the VM transparent to the guest operating system or the remote client that uses the VM.
Recently, solutions providing centralized hosting for VMs that run (virtual) desktops have been developed. Such solutions consist of centralized servers that are partitioned into multiple VMs that host the virtual desktops, thereby providing a desktop for each user. The centralized hosting provides the manageability of sever-based computing, while the dedicated environment provides the flexibility and compatibility with applications that a desktop enables. In general, VMs therefore enable remote access to a host or server computer by a remote client computer, which mimics or reconstructs the events taking place on the host computer.
However, one problem that arises with the centralized hosting solution for VMs is excessive power consumption. Currently, centralized data centers attempt to save power in a non-virtual environment by using several power management mechanisms and policies to reduce power. For example, a data center may selectively switch off computing machines, or part of the computing machines, so that the data center is consuming less power overall. Some examples of existing power management mechanisms and/or policies include shutting off an operating system (OS), placing the OS in a low power consumption mode, placing the OS in a hibernation mode, placing the OS in a suspend mode, selectively shutting down a system display, system networking component, reducing a frequency of an operating CPU, and so on.
However, with a virtualized system, these currently-existing power management mechanisms and policies are not effective in the VM hosting environment. The current power management mechanisms and policies cannot be used because, from the host view, each VM is an application that is always working. It becomes practically impossible to use any prior art power management method to reduce power, as the host needs computing power for the working VMs. Therefore, a power consumption reduction method for virtual desktop servers would be beneficial.